package com.sangeng.exception.handler;

/**
 * @author: xujiabing
 * @date: 2024-09-15 20:10
 * @description 自定义异常失败处理机制-认证过程
 */
import com.alibaba.fastjson.JSON;
import com.sangeng.domain.ResponseResult;
import com.sangeng.utils.WebUtils;
import org.springframework.http.HttpStatus;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Component
public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint {

    @Override
    public void commence(HttpServletRequest httpServletRequest
            , HttpServletResponse httpServletResponse
            , AuthenticationException e) throws IOException, ServletException {
        //封装返回json
        ResponseResult result = new ResponseResult(
                HttpStatus.UNAUTHORIZED.value(), "认证失败,请重新登录");

        String json = JSON.toJSONString(result);
        WebUtils.renderString(httpServletResponse,json);
    }
}
